//引入类
import WxRequest from './request'
//引入getStorage方法
import {getStorage,clearStorage} from './storage'
//引入封装的模态框
import {toast} from './extendApi'
//引入环境变量配置env
import {env} from './env'

//将类进行实例化之后进行使用
 const instance = new WxRequest({
  baseURL:env.baseURL,
  timeout:15000
})

//通过实例来配置请求拦截器
instance.interceptors.request=(config)=>{
  //发送请求前做点什么
  //在请求拦截器里判断是否携带token，如果没有token就让用户跳转到登录页面
  
 const token= getStorage("token")
 //如果token存在
 if (token) {
    //向配置项里的请求头里新增token
 config.header.token = token
 } 
  return config
}
//通过实例来配置响应拦截器
instance.interceptors.response= async (response)=>{
  //收到响应后做点什么
  const {isSuccess,data} = response

  //如果网络错误，调用fail回调
  if (!isSuccess) {
    wx.showToast({
      title: '网络错误',
      duration: 1000,
      icon: 'none',
      mask: true,
    })
    //将错误参数返回出去
    return response
  }

  //在响应拦截器里判断token是否过期
  //判断data内的参数
  switch (data.code) {
    case 200:
      return data
    case 208:
     const res=await wx.modal({title:"提示",content:"用户错误，请返回登录页面",showCancel:false})
     //点击确认，跳转到登录页面，并清空用户信息
      if (res) {
        clearStorage()
        wx.navigateTo({
          url: '/pages/login/login', 
        })
      }
      return Promise.reject(data)
    default:
      toast({title:'程序错误，请联系客服反馈'})
      return Promise.reject(data)
  }

  //如果网络没有错误，正常返回，就return data
  // return data
}

//使用默认暴露出instance实例
export default instance